package com.lzj.server.constant;

/**
 * @author lzj
 * @date 2024/10/20
 * RedisConstant 接口，定义了与 Redis 相关的常量。
 */
public interface RedisConstant {
    /**  视频信息锁前缀 */
    String VIDEO_LOCK_PREFIX = "video:lock:";
    /** 缓存超时时间，单位：秒 */
    long VIDEO_TIMEOUT = 60 * 60;
    /**定义变量，记录空对象的缓存过期时间
     * 如果在数据库中不存在那么会缓存一个空对象进去，但是这个对象是没有用的，所以这个对象的过期时间应该不能太长
     * */
    long VIDEO_TEMPORARY_TIMEOUT = 10 * 60;
    /** 布隆过滤器使用*/
    String ALBUM_BLOOM_FILTER = "album:bloom:filter";
    /** 文件上传分片缓存 */
    String FILE_PART_UPLOAD = "file:part:";
    /** 文件上传任务 */
    String FILE_UPLOAD_TASK = "file:upload:task:";
    /** 文件上传任务超时时间, 单位：秒 */
    long FILE_UPLOAD_TASK_TIMEOUT = 60 * 5;
    /** 用户模型缓存 */
    String USER_MODEL = "user:model:";

    /** 用于兴趣推送时去重，存储视频 ID */
    String HISTORY_VIDEO = "history:video:";

    /** 用户浏览记录，存储视频信息 */
    String USER_HISTORY_VIDEO = "user:history:video:";

    /** 系统视频库，每个公开的视频都会存在其中 */
    String SYSTEM_STOCK = "system:stock:";

    /** 图形验证码 */
    String  CAPTCHA_IMAGE_CODE = "captcha:image:code:";

    /** 注册逻辑中的邮箱验证码 */
    String EMAIL_CODE = "email:code:";

    /** 热门排行榜 */
    String HOT_RANK = "hot:rank";

    /** 热门视频 */
    String HOT_VIDEO = "hot:video:";

    /** 历史记录过期时间（单位：秒） */
    Long HISTORY_TIME = 432000L;

    /** 邮箱验证码过期时间（单位：秒） */
    Long EMAIL_CODE_TIME = 300L;

    /** 图形验证码过期时间（单位：秒） */
    Long CAPTCHA_IMAGE_CODE_TIME = 60L;

    /** 用户搜索记录过期时间（单位：秒） */
    Long USER_SEARCH_HISTORY_TIME = 432000L;

    /** 系统分类库，用于查询分类下的视频随机获取 */
    String SYSTEM_TYPE_STOCK = "system:type:stock:";

    /** 发件箱 */
    String OUT_FOLLOW = "out:follow:feed:";

    /** 收件箱 */
    String IN_FOLLOW = "in:follow:feed:";

    /** 用户搜索记录 */
    String USER_SEARCH_HISTORY = "user:search:history:";

    /** 用户关注人 */
    String USER_FOLLOW = "user:follow:";

    /** 用户粉丝 */
    String USER_FANS = "user:fans:";

    /** 发布视频限流 */
    String VIDEO_LIMIT = "video:limit";
    /** 发布视频限流时间（单位：秒）提交密钥前缀*/
    String SUBMIT_KEY_PREFIX = "submit:key:";

    /** 分片上传的etag */
    String MULTIPART_ETAG = "multipart:etag:";
    /** 分片上传的etag过期时间（单位：秒） */
    Long MULTIPART_ETAG_EXPIRE_TIME = 60*30L;
}
